perm filename TTY.FAI[5,BGB] blob sn#013955 filedate 1972-11-29 generic text, type T, neo UTF8
00100	TITLE TTY
00200	;CAREYE TELETYPE COMMAND JUMP TABLE  --  NOVEMBER 1972.
00300	
00400		OPDEF PPIOT[702B8]
00500	
00600		EXTERN CROP,REFRESH
00700		EXTERN SX,SY,DEL,MAG
00800		OLD44:0
00900		PDL: BLOCK 100
01000	
01100	;TELETYPE COMMAND STATE.
01200		DECLARE{CTRL,META,CHR}
01300	
01400	SUBR TTY
01500	BEGIN TTY
01600		LAC 17,[IOWD 100,PDL]
01700		LAC 44↔DAC OLD44
01800		PPIOT 2,-=250
01900		PPIOT 3,3003
02000		MOVEI 20
02100		OUTSTR [BYTE(7)15,12,0]
02200		SOJG .-1
02300		CALL(CROP)
02400		CALL(REFRESH)
02500	L0:	OUTSTR[BYTE(7)15,12,0]
02600	L1:	OUTSTR [ASCIZ"*"]
02700		INCHRW
02800		SETZM CTRL↔TRZE 200↔SETOM CTRL
02900		SETZM META↔TRZE 400↔SETOM META
03000		CAIN 0,15↔GO L1+1
03100		CAIN 0,12↔GO L1
03200		DAC 0,CHR
03300	
03400	;TEST FOR LETTER COMMAND.
03500		LAC 1,0↔ANDI 1,37
03600		CAIGE 0,"A"↔GO .+3
03700		CAIG  0,"Z"↔GO L3
03800		CAIGE 0,"a"↔GO .+3
03900		CAIG  0,"z"↔GO L3
04000	
04100	;WINDOW MOVING COMMANDS.
04200		CAIN 0," "↔GO L2
04300		CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
04400		CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
04500		CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
04600		CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
04700		CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
04800		CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
04900		CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
05000		CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
05100		GO L0
05200	
05300	L2:	CALL(CROP)
05400		CALL(REFRESH)
05500		GO L1+1
     

00100		EXTERN HISTOGRAM
00200		EXTERN FLGARC,FLGBK
00300	
00400	L3:	PUSHJ P,@L4(1)↔GO L1
00500	
00600	L4:	NOP		;null.
00700		FLGA.		;"A"
00800		FLGB.		;"B"
00900		MAKCUT		;"C"
01000		NOP		;"D"
01100		NOP		;"E"
01200		NOP		;"F"
01300		NOP		;"G"
01400		HISTOGRAM	;"H"
01500		TVDSKI		;"I"
01600		NOP		;"J"
01700		KILLER		;"K"
01800		NOP		;"L"
01900		NOP		;"M"
02000		NOP		;"N"
02100		NOP		;"O"
02200		NOP		;"P"
02300		NOP		;"Q"
02400		NOP		;"R"
02500		NOP		;"S"
02600		TVCAMI		;"T"
02700		NOP		;"U"
02800		NOP		;"V"
02900		NOP		;"W"
03000		NOP		;"X"
03100		NOP		;"Y"
03200		NOP		;"Z"
03300	
03400	NOP:	OUTSTR[BYTE(7)15,12]
03500		POP0J
03600	FLGA.:	SETCMM FLGARC↔OUTSTR[BYTE(7)15,12]↔POP0J
03700	FLGB.:	SETCMM FLGBK ↔OUTSTR[BYTE(7)15,12]↔POP0J
03800	
03900	BEND
     

00100	SUBR(GETFIL)
00200	BEGIN GETFIL
00300		OUTSTR[ASCIZ/	FILE = /]
00400		LAC 1,[POINT 6,FILNAM,-1]
00500		MOVEI 2,6
00600	L:	INCHWL
00700		CAIN 15
00800		GO[INCHWL↔POP0J]
00900		SOJL 2,L
01000		SUBI 40
01100		IDPB 1
01200		GO L
01300	BEND
01400	
01500	FILNAM:	0	;FILE NAME.
01600	EXTION:	0	;EXTENSION.
01700		0
01800	PPPN:	0	;PROJECT-PROGRAMMER.
01900	
02000	
02100	;INPUT A TELEVISION PICTURE FROM A DISK FILE.
02200		EXTERN HEADER,TVBUF,FLGSIX
02300	SUBR(TVDSKI)
02400	BEGIN TVDSKI
02500	
02600		CALL(GETFIL)
02700	;DEFAULT FILE SPECIFICATION.
02800		SKIPN 1,PPPN↔LAC 1,[SIXBIT/DATBGB/]↔DAC 1,PPPN
02900		SKIPN 1,EXTION↔LAC 1,[SIXBIT/TMP/]↔DAC 1,EXTION
03000		SKIPN 1,FILNAM↔LAC 1,[SIXBIT/X/]↔DAC 1,FILNAM
03100	
03200		INIT 1,17↔SIXBIT/DSK/↔0↔HALT
03300		LOOKUP 1,FILNAM
03400		GO[OUTSTR[ASCIZ/	LOOKUP FAILED.
03500	/]↔GO .+4]
03600		IN 1,[IOWD =10378,HEADER↔0]↔JFCL
03700		OUTSTR[ASCIZ"	EOF.
03800	"]↔	RELEASE 1,
03900		SETZM FILNAM↔SETZ EXTION↔SETZM EXTION+1↔SETZM PPPN
04000		POP0J
04100	BEND
     

00100	TVPTR:	XWD -=6912,TVBUF
00200	TVCLIP:	701002		;BCLIP=7 TCLIP=0 CAM=1.
00300	TVYXW:	BYTE(9)50,34,40
00400	TVERR:	0
00500	
00600	;INPUT A TELEVISION PICTURE FROM A CAMERA.
00700	;TVCAM(CAMERA).
00800	SUBR(TVCAMI)
00900	BEGIN TVCAMI
01000		SETZM FLGSIX
01100		SAVAC(17)
01200	TVTAKE:	INIT 17,17↔SIXBIT/TV/↔0
01300		GO[OUTSTR[ASCIZ"CAN'T INIT TV."]↔INCHRW↔GO .-3]
01400	
01500		SETZM TVERR↔INPUT 17,TVPTR↔MOVE 1,TVERR
01600		TRNE 1,100060↔GO .-4
01700		RELEASE 17,
01800	
01900	; REPORT ON THE ERROR BITS AND RETAKE IF NECESSARY;
02000		TRNE	1,100000↔OUTSTR [ASCIZ/TV PARITY ERROR.
02100	/]↔	TRNE	1,40	↔OUTSTR [ASCIZ/TV DATA MISS.
02200	/]↔	TRNE	1,20	↔OUTSTR [ASCIZ/TV NON EX MEM.
02300	/]↔	TRNE	1,100060↔JRST TVTAKE
02400	; TIME AND DATE.
02500		CALLI 22↔MOVEM	TVTIME#
02600		CALLI 14↔MOVEM	TVDATE#
02700	; CONVERT FROM GREY CODE TO GRAY CODE.
02800		HRLZI	16,[
02900			SETCM	17,(16)		;0
03000			MOVE	15,17		;1
03100			LSH	15,-1		;2
03200			AND	15,13		;3
03300			XORB	17,15		;4
03400			LSH	15,-2		;5
03500			AND	15,14		;6
03600			XOR	17,15		;7
03700			MOVEM	17,(16)		;10
03800			AOBJN	16,		;11
03900			JRST			;12
04000			BYTE (4)7,7,7,7,7,7,7,7,7
04100			BYTE (4)3,3,3,3,3,3,3,3,3
04200			]
04300		BLT	16,14
04400		LAC	16,TVPTR
04500		HRRI	12,.+2
04600		JRST
04700		GETAC(17)
04800		POP0J
04900	BEND
     

00100	SUBR(MAKCUT)
00200	BEGIN
00300		EXTERN REFRESH,MKVICS
00400		SETZ 1,
00500	L1:	INCHWL
00600		CAIN 15↔GO L2
00700		IMULI 1,=10
00800		ANDI 17
00900		ADD 1,0
01000		GO L1
01100	L2:	INCHWL
01200		CAIL 1,=64
01300		POP0J
01400		MOVNS 1
01500		SETZ 3,
01600		SLACI 2,1B18
01700		LSHC 2,(1)
01800		PUSH P,2
01900		PUSH P,3
02000		PUSHJ P,MKVICS
02100		PUSHJ P,REFRESH
02200		POP0J
02300	BEND
     

00100	SUBR(KILLER)
00150	EXTERN PGON0
00200		LAC [XWD PGON0+2,PGON0+2]↔DAC PGON0+4
00300		LAC OLD44↔CALLI 11↔JFCL
00400		SETZM AVAIL↔SETZM CORSIZ
00500		SETZM SX↔SETZM SY↔LAC[32.0]↔DAC DEL↔LAC[3.4]↔DAC MAG
00600		CALL(CROP)
00700		CALL(REFRESH)
00800		OUTSTR[BYTE (7)15,12]↔POP0J
00900	
01000		CORSIZ: 0
01100		AVAIL:	0
01200	; PTR ← GETBLK;
01300	SUBR(GETBLK)
01400	BEGIN GETBLK
01500		SKIPN 1,AVAIL↔GO L1
01600		CDR(1)↔DAP AVAIL
01700		SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
01800		MOVEI 4↔ADDM CORSIZ
01900		ADDI 1,1↔POP0J
02000	;FOUR MORE K !
02100	;GET A FOUR K BLOCK OF CORE.
02200	L1:	LAC 1,44↔LAC 0,1↔ADDI 0,10000
02300		CALLI 11↔GO[OUTSTR[ASCIZ/NO MORE CORE./]↔HALT]
02400	
02500	;CLEAR THE NEW BLOCK OF CORE.
02600		AOS 1↔DAC 2,AC2#↔LAC 2,44
02700		SETZM(1)↔LIPI(1)↔LAPI(1)1↔BLT(2)
02800	
02900	;MAKE AVAIL LIST.
03000		DAPZ 1,AVAIL↔DIP 1,1↔TLO 1,4
03100		HLRZM 1,(1)↔ADD 1,[XWD 4,4]
03200		CAIE 2,3(1)↔GO .-3↔LAC 2,AC2↔GO GETBLK
03300	BEND
     

00100	;RELBLK(PTR);
00200	RELBLK:
00300	BEGIN RELBLK
00400		LAC 1,ARG1↔SUBI 1,1
00500		SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
00600		LAC 2,AVAIL↔DAP 2,(1)↔DAP 1,AVAIL
00700		NIM -4↔ADDM CORSIZ
00800		POP1J
00900	BEND
01000	
01100	;KLPGON(P)
01200	SUBR(KLPGON)
01300	BEGIN KLPGON
01400		ACCUMULATORS{A2,PGN,E0,Q,R}
01500		LAC PGN,ARG1
01600		CAR E0,1(PGN)
01700		CALL RELBLK,PGN
01800		DAC E0,Q
01900	L:	CDR R,1(Q)	;CCW.
02000		CALL RELBLK,Q
02100		CAMN R,E0↔POP1J
02200		DAC R,Q↔GO L
02300	BEND
02400	
02500	END TTY